A software application in execution can be modelled to illustrate the consumption of resources, such as use of a central processor unit (CPU) for a specific period of time, by consumers of resources, such as functions in the application. Such a model allows an analysis of the application by software analysts or analysis tools directed to a particular objective. For example, a model of the use of a CPU can be displayed on a screen and used by a software analyst to identify those functions in the software application that use the CPU for the most time.
An example of a model which is used to represent a software application in execution is the “arcflow” model and is described in “A Unifying Approach to Performance Analysis in the Java Environment” (Java is a trademark of Sun Microsystems, Inc.) by Alexander et al (IBM Systems Journal, Vol. 39 No. 1, 2000). The arcflow model illustrates the consumption of resources in an application by representing a set of consumers in the application as a set of interconnected nodes in a tree structure. For example, FIG. 1 is a conventional arcflow model for illustrating the use of a CPU by functions in a software application. The functions are represented as nodes in a tree structure, with node A 102 corresponding to a function A, node G 104 corresponding to a function G and so on. The arcflow model of FIG. 1 is described as a series of steps below:
1. Function A is called by another function in the application and is represented as node A 102;
2. Node A 102 calls node G 104 corresponding to function A calling function G to obtain access to a block of memory;
3. Node A 102 calls node B 106 corresponding to function A calling function B; and
4. Node A 102 calls node R 108 corresponding to function A calling function R to release the block of memory.
Each node also includes a numerical indicator in parentheses of a number of times the function to which the node corresponds has been called. For example, each function in FIG. 1 has been called one time.
The CPU is a mutually exclusive resource used by the functions of the application. Usage of the CPU is measured by the amount of time a function uses the CPU and is known as CPU time. Each node in an arcflow model usually includes an indicator of a total amount of a particular resource, such as CPU time, that has been consumed by a function to which the node corresponds. This indicator is excluded from FIG. 1 for clarity, but is clearly explained in the Alexander document cited above.
While the prior art model of FIG. 1 provides useful information regarding the function calls which consume CPU time in an application, it would be useful if the model could further provide information regarding which functions are involved in the consumption of a resource other than CPU time, in situations where the consumption of the resource takes place while several functions are called. For example, in the model of FIG. 1, it would be useful if the model could also provide information regarding which functions are called while the block of memory is being accessed by the application. However, the present state of the art does not provide this further information.